package com.dk.controller;

import com.alibaba.fastjson.JSONObject;
import com.dk.pojo.Student;
import com.dk.pojo.User;
import com.dk.service.TestServiceI;
import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller //在spring容器中
@RequestMapping("testController")
public class TestController {

    //日志 访问的是类名.class 加final防止被重写
    //private final Logger logger= LoggerFactory.getLogger("开启日志打印");
    private final Logger logger= LoggerFactory.getLogger(TestController.class);

    @Autowired
    private TestServiceI testServiceI;

    @Autowired
    private User user;

    @Autowired
    private Student student;

    @RequestMapping("test")
    @ResponseBody
    public String test(){
        //不用sout打印得原因：1、他只在控制台上打印 2、他内部使用了同步锁 性能降低
        //  System.out.println(userNme);//他不是你的属性，单个取用@Value()
        //springboot默认开启info 级别
        //错误级别 debug < info 业务日志 < warn 警告 < error 错误打印
        //可以配置打印日志的级别 在.yml中

        String test =null;
        try{
            test = testServiceI.test();
           logger.info("成功: {}",test);
        }catch (Exception e){
            logger.error("数据异常：{}",e);
            return "111";
        }
        return test;
        //打印return tes..test()的方法日志 使用try catch
       //return testServiceI.test();
    }

    @RequestMapping("user")
    @ResponseBody
    public User user(String userName){
        //不用+拼接 使用占位符{} 把userName放到{}里 可以多个{}，{}，{}
        logger.info("用户名为：{}",userName);
       // logger.info("查询成功，返回数据: {}",User);
        logger.info("查询成功，返回数据: {}",JSONObject.toJSONString(user));
        return user;
    }

    @RequestMapping("student")
    @ResponseBody
    public Student student(){
		//注释。。。
        return student;
    }

   /* @Value("${user.userName}")//代替bean中的标签property
    private String userNme;//查看
*/



}
